# Python中的字符串

# 使用转移字符中的用八进制和十六进制表示字符1 -49
# s = '\61'  # 八进制
# a = '\x31'  # 十六进制
# print(s, a)


# 利用%进行格式化输出字符串
# s = {'name': "你好"}  # 字典，键name 值你好
# print("%(name)s" % s)  # 单个对象直接使用变量名
# a = {'year': 2022, 'c_year': "二零二二年"}
# print("%(year)d用汉语来说就是%(c_year)s" % a)
# print("%c %+3d %-3d %03d %3.1f %e" % ('a', 2, -1, 2, 1.23, 1.23))  # 用元组形式对多个元素进行格式化输出字符串

# 利用format方法进行格式化输出字符串
# print("{}!今年是{}!".format(2022, "二零二二年"))  # 默认相对位置
# print("{1}!今年是{0}!".format("二零二二年", 2022))  # 指定位置
# s = {"year": 2022, "c_year": "二零二二"}
# print("{} {}".format(s.get('year'), s.get("c_year")))  # 格式化控制字典类型时
# print("{year} {c_year}".format(year=2022, c_year="二零二二"))  # 关键字参数，需要在占位符写上对应键
# a1 = [1, 2, 3]
# a2 = ("Hello", 0, -1)
# print("{0[2]} {1[1]} {1[0]}".format(a1, a2))  # 通过列表、元组的下标索引进行访问
# print("{:*<+3}\n{:*< 3}".format(3, 23))  # 指定*填充，左对齐，使用+添加符号，占3格  指定*填充，左对齐，使用空格添加符号，占三格 默认format中参数相对顺序
# print("{1:*<+3}\n{0:*< 3}".format(3, 23))  # 指定format中参数顺序
# 注意到上面的符号也是属于width占用格子数中
# str1 = "Hello"
# print("He" in str1)
# print("eH" in str1)
# print("he" in str1)
# print("He" not in str1)
# a = b"abc"
# print(a)
# print(str1[0])  # H
# print(str1[0:2])  # He
# print(str1[0]*3)  # HHH
# print(str1[0] + str1[1])  # He
# print("这个是换行符" + r'\n')

# 字符串处理函数

# str1 = "Hello"
# print(str1.find('o', 0, 4))
# # print(str1.index('o', 0, 4))  # 报异常
# print(str1.find('o', 0, 5))  # 证明范围为[)
# print(str1)
# str1 = str1.replace('l', 't', 1)  # 把str1中的l替换为t，不超过1次 注意本身不会发生改变，所以需要拷贝赋值，方可展现结果
# print(str1)

# str1 = "ae"
# str2 = "Ae"
# print(str1.islower())
# print(str2.islower())
# str3 = "AS"
# str4 = "as"
# print(str3.isupper())
# print(str4.isupper())

# str1 = "Yu"
# print(str1.center(4, '*'))
# print(str1)
# from typing import List

# str1 = "hello world 2022"
# print(str1.split(' ', 1))  # 以空格为分隔符，分割一个
# print(str1.split(' '))  # 以空格为分割符，不限制分割
# s = str1.split(' ')  # 返回一个列表
# print(s[2])
# q = ' '  # 空格字符串
# print(q.join(s))  # 以空格为分割符连接s中所有元素
# str2 = q.join(s)  # 返回一个字符串
# print(str2)

# str1 = " ni hao "
# print(str1)
# print(str1.strip())
# print(str1)
# print(str1.lstrip())

# num1 = eval(input())
# num2 = eval(input())
# print("{} + {} 的值为 {}".format(num1, num2, num1 + num2))

# 书p42对应习题
# 1编写程序，给出一个英文句子，统计单词个数 拆分、合并函数
# str1 = input("请输入一个英文句子：")
# s = str1.split(" ")
# print("单词个数为{}个".format(len(s)))

# 2编写程序，给出一个字符串，将其中字符E用空格替换，然后输出 拆分 合并函数
# str1 = input("请输入一个字符串：")
# s = str1.split("E")
# print(' '.join(s))

# 3键盘交互式输入一个人的18位身份证，输出该人的出生日期 字符串的切片操作
# str1 = input("输入身份证号：")
# if len(str1) != 18:
#     print("输入错误！")
# else:
#     print(str1[6:10] + '年' + str1[10:12] + '月' + str1[12:14] + '日'
